package io;

import java.io.*;

/**
 * 使用缓冲字符输入流BufferedReader按行读取字符串
 * 内部默认维护了一个8192长的char数组,可以块读文本数据保证读取效率
 * 提供了readLine()方法可以按行读取字符串
 */
public class BrDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("./untitled1/src/io/BrDemo.java");
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);
        /*readLine()读取一行字符串
          1)内部实现
        * readLine时,会一次性读取8192个字符存入内部数组中
        * 然后从数组第1个字符开始读取,直到遇到\n换行符为止,会将读取到的内容以一个字符串形式返回
        2)返回结果
         2.1)读到\n换行符，则返回该行字符串
            2.2)读到空行，则返回空字符串
            2.3)读到了末尾，则返回null
        * */
        String line;
        while ((line = br.readLine()) != null) {//读的是字符串，不是字符，所以为空就读完了
            System.out.println(line);
        }
        br.close();
    }
}
